/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2016 pjoc.pub, blademainer.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

package pub.pjoc.pay.pojo;

/**
 * @author blademainer
 * @version 2016-10-21 12:12
 */
public abstract class BasePayOrder {
  /**
   * Version of the gateway.
   */
  private String version;

  /**
   * The order id of this system.
   */
  private String orderId;

  /**
   * The order id of the channel.
   */
  private String channelOrderId;

  /**
   * Choose witch pay type should be used.
   */
  private String payType;

  /**
   * The biz no is required when we need sign.
   */
  private String bizNo;

  /**
   * Order id generated by biz.
   */
  private String bizOrderId;

  /**
   * The payer's id in your system, must unique.
   */
  private String userId;

  /**
   * The payer's user name in your system.
   */
  private String userName;

  /**
   * Sign message.
   *
   * @see pub.pjoc.common.sign.SignUtils
   */
  private String sign;

  /**
   * The charset of this request. Default is utf-8 if not specified.
   *
   * @see pub.pjoc.common.sign.SignUtils
   */
  private String charset;

  /**
   * Pay amount of this order.
   */
  private int amount;

  /**
   * If order changed status, system should notify to this url.
   */
  private String notifyUrl;

  /**
   * If order changed status and pay type is a redirect type, system should redirect to this url.
   */
  private String redirectUrl;

  /**
   * Extension of parameters. Json format.<p></p>
   * This parameter should add to notify parameters.
   */
  private String extensionsJson;

  /**
   * Other parameters as json format.<p></p>
   * This parameter should most be channel's parameter.
   */
  private String othersJson;

  /**
   * Status of this order.
   */
  private String status;

  /**
   * The time that the order created.
   */
  private String createTime;

  public String getOrderId() {
    return orderId;
  }

  public void setOrderId(String orderId) {
    this.orderId = orderId;
  }

  public String getChannelOrderId() {
    return channelOrderId;
  }

  public void setChannelOrderId(String channelOrderId) {
    this.channelOrderId = channelOrderId;
  }

  public String getPayType() {
    return payType;
  }

  public void setPayType(String payType) {
    this.payType = payType;
  }

  public String getBizNo() {
    return bizNo;
  }

  public void setBizNo(String bizNo) {
    this.bizNo = bizNo;
  }

  public String getBizOrderId() {
    return bizOrderId;
  }

  public void setBizOrderId(String bizOrderId) {
    this.bizOrderId = bizOrderId;
  }

  public String getUserId() {
    return userId;
  }

  public void setUserId(String userId) {
    this.userId = userId;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public String getSign() {
    return sign;
  }

  public void setSign(String sign) {
    this.sign = sign;
  }

  public String getCharset() {
    return charset;
  }

  public void setCharset(String charset) {
    this.charset = charset;
  }

  public int getAmount() {
    return amount;
  }

  public void setAmount(int amount) {
    this.amount = amount;
  }

  public String getNotifyUrl() {
    return notifyUrl;
  }

  public void setNotifyUrl(String notifyUrl) {
    this.notifyUrl = notifyUrl;
  }

  public String getRedirectUrl() {
    return redirectUrl;
  }

  public void setRedirectUrl(String redirectUrl) {
    this.redirectUrl = redirectUrl;
  }

  public String getVersion() {
    return version;
  }

  public void setVersion(String version) {
    this.version = version;
  }

  public String getExtensionsJson() {
    return extensionsJson;
  }

  public void setExtensionsJson(String extensionsJson) {
    this.extensionsJson = extensionsJson;
  }

  public String getOthersJson() {
    return othersJson;
  }

  public void setOthersJson(String othersJson) {
    this.othersJson = othersJson;
  }

  public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public String getCreateTime() {
    return createTime;
  }

  public void setCreateTime(String createTime) {
    this.createTime = createTime;
  }

  @Override
  public String toString() {
    return "BasePayOrder{" +
        "version='" + version + '\'' +
        ", orderId='" + orderId + '\'' +
        ", channelOrderId='" + channelOrderId + '\'' +
        ", payType='" + payType + '\'' +
        ", bizNo='" + bizNo + '\'' +
        ", bizOrderId='" + bizOrderId + '\'' +
        ", userId='" + userId + '\'' +
        ", userName='" + userName + '\'' +
        ", sign='" + sign + '\'' +
        ", charset='" + charset + '\'' +
        ", amount='" + amount + '\'' +
        ", notifyUrl='" + notifyUrl + '\'' +
        ", redirectUrl='" + redirectUrl + '\'' +
        ", extensionsJson='" + extensionsJson + '\'' +
        ", othersJson='" + othersJson + '\'' +
        ", status='" + status + '\'' +
        ", createTime='" + createTime + '\'' +
        '}';
  }
}
